home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / ExtraLib / include / rhosigma / settings.i < prev   
Encoding:
Text File  |  2001-05-01  |  8.3 KB  |  378 lines

  1. ; ___________________________________________________________________________
  2. ; |*************************************************************************|
  3. ; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
  4. ; |*| Set TAB to 15 for best readable file layout. |*| HiSoft DevPac 3.04 |*|
  5. ; |*|______________________________________________|*|____________________|*|
  6. ; |*************************************************************************|
  7. ; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
  8. ; |*|               |*|  $Id: settings.i (28.04.01)                       |*|
  9. ; |*| ###### ###### |*|  RhoSigma Source based on NDK 3.1 Includes 40.15  |*|
  10. ; |*| ##  ## ##   # |*| _________________________________________________ |*|
  11. ; |*| ##  ##  ##    |*|                                                   |*|
  12. ; |*| ######   ##   |*|  Useful defines and extensions for NDK includes   |*|
  13. ; |*| ##      ##    |*|                                                   |*|
  14. ; |*| ##     ##   # |*| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |*|
  15. ; |*| ##     ###### |*|  Copyright © 1998-2001 RhoSigma, Roland Heyder    |*|
  16. ; |*|               |*|  All Rights Reserved.                             |*|
  17. ; |*|_______________|*|___________________________________________________|*|
  18. ; |*************************************************************************|
  19. ; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  20.  
  21.     IFND    RHOSIGMA_SETTINGS_I
  22. RHOSIGMA_SETTINGS_I    SET    1
  23.  
  24.     IFND    EXEC_MEMORY_I
  25.      INCLUDE    exec/memory.i
  26.     ENDC
  27.  
  28.     ;** enhanced booleans **
  29.  
  30. UPPER    EQU     1     ; Signum- und Wahrheitswerte zur
  31. EQUAL    EQU     0     ; Verwendung in Variablen des
  32. LOWER    EQU    -1     ; Typs BOOL
  33. FALSE    =    EQUAL
  34. TRUE    =    LOWER
  35.  
  36.     ;** exec/types **
  37.  
  38. SINGLE    MACRO    ;(Label/A)          ; Fließkomma-Typen
  39. \1    =    SOFFSET          ; DOUBLE bereits in types.i
  40. SOFFSET    SET    SOFFSET+4          ; definiert
  41.     ENDM
  42.  
  43. EXTEND    MACRO    ;(Label/A)
  44. \1    =    SOFFSET
  45. SOFFSET    SET    SOFFSET+12
  46.     ENDM
  47.  
  48. PACKED    MACRO    ;(Label/A)
  49. \1    =    SOFFSET
  50. SOFFSET    SET    SOFFSET+12
  51.     ENDM
  52.  
  53. CHARS    MACRO    ;(Label/A,Length/A/N) ; für String-Einbindungen
  54. \1    =    SOFFSET           ; bzw. Puffer in Strukturen
  55. SOFFSET    SET    SOFFSET+\2
  56.     ENDM
  57.  
  58.     ;** UNION-Types **
  59.  
  60.     IFND    USIZE    ; wichtig um Assembler-Fehler
  61. USIZE     SET    0    ; zu verhindern
  62.     ENDC
  63.  
  64. ; ACHTUNG !! - Jeweils beim letzten Element einer UNION muß das Schlüsselwort
  65. ;    »END« angeben werden, damit der SOFFSET-Wert richtig erhöht wird.
  66.  
  67. UNIBOOL    MACRO    ;(Label/A, END/K/S)
  68. \1    =    SOFFSET
  69.     IFLT    USIZE-2
  70. USIZE     SET    2
  71.     ENDC
  72.     IFC    '\2','END'
  73. SOFFSET     SET    SOFFSET+USIZE
  74. USIZE     SET    0
  75.     ENDC
  76.     ENDM
  77.  
  78. UNIBYTE    MACRO    ;(Label/A, END/K/S)
  79. \1    =    SOFFSET
  80.     IFLT    USIZE-1
  81. USIZE     SET    1
  82.     ENDC
  83.     IFC    '\2','END'
  84. SOFFSET     SET    SOFFSET+USIZE
  85. USIZE     SET    0
  86.     ENDC
  87.     ENDM
  88.  
  89. UNIUBYTE    MACRO    ;(Label/A, END/K/S)
  90. \1    =    SOFFSET
  91.     IFLT    USIZE-1
  92. USIZE     SET    1
  93.     ENDC
  94.     IFC    '\2','END'
  95. SOFFSET     SET    SOFFSET+USIZE
  96. USIZE     SET    0
  97.     ENDC
  98.     ENDM
  99.  
  100. UNIWORD    MACRO    ;(Label/A, END/K/S)
  101. \1    =    SOFFSET
  102.     IFLT    USIZE-2
  103. USIZE     SET    2
  104.     ENDC
  105.     IFC    '\2','END'
  106. SOFFSET     SET    SOFFSET+USIZE
  107. USIZE     SET    0
  108.     ENDC
  109.     ENDM
  110.  
  111. UNIUWORD    MACRO    ;(Label/A, END/K/S)
  112. \1    =    SOFFSET
  113.     IFLT    USIZE-2
  114. USIZE     SET    2
  115.     ENDC
  116.     IFC    '\2','END'
  117. SOFFSET     SET    SOFFSET+USIZE
  118. USIZE     SET    0
  119.     ENDC
  120.     ENDM
  121.  
  122. UNISHORT    MACRO    ;(Label/A, END/K/S)
  123. \1    =    SOFFSET
  124.     IFLT    USIZE-2
  125. USIZE     SET    2
  126.     ENDC
  127.     IFC    '\2','END'
  128. SOFFSET     SET    SOFFSET+USIZE
  129. USIZE     SET    0
  130.     ENDC
  131.     ENDM
  132.  
  133. UNIUSHORT    MACRO    ;(Label/A, END/K/S)
  134. \1    =    SOFFSET
  135.     IFLT    USIZE-2
  136. USIZE     SET    2
  137.     ENDC
  138.     IFC    '\2','END'
  139. SOFFSET     SET    SOFFSET+USIZE
  140. USIZE     SET    0
  141.     ENDC
  142.     ENDM
  143.  
  144. UNILONG    MACRO    ;(Label/A, END/K/S)
  145. \1    =    SOFFSET
  146.     IFLT    USIZE-4
  147. USIZE     SET    4
  148.     ENDC
  149.     IFC    '\2','END'
  150. SOFFSET     SET    SOFFSET+USIZE
  151. USIZE     SET    0
  152.     ENDC
  153.     ENDM
  154.  
  155. UNIULONG    MACRO    ;(Label/A, END/K/S)
  156. \1    =    SOFFSET
  157.     IFLT    USIZE-4
  158. USIZE     SET    4
  159.     ENDC
  160.     IFC    '\2','END'
  161. SOFFSET     SET    SOFFSET+USIZE
  162. USIZE     SET    0
  163.     ENDC
  164.     ENDM
  165.  
  166. UNIFLOAT    MACRO    ;(Label/A, END/K/S)
  167. \1    =    SOFFSET
  168.     IFLT    USIZE-4
  169. USIZE     SET    4
  170.     ENDC
  171.     IFC    '\2','END'
  172. SOFFSET     SET    SOFFSET+USIZE
  173. USIZE     SET    0
  174.     ENDC
  175.     ENDM
  176.  
  177. UNISINGLE    MACRO    ;(Label/A, END/K/S)
  178. \1    =    SOFFSET
  179.     IFLT    USIZE-4
  180. USIZE     SET    4
  181.     ENDC
  182.     IFC    '\2','END'
  183. SOFFSET     SET    SOFFSET+USIZE
  184. USIZE     SET    0
  185.     ENDC
  186.     ENDM
  187.  
  188. UNIDOUBLE    MACRO    ;(Label/A, END/K/S)
  189. \1    =    SOFFSET
  190.     IFLT    USIZE-8
  191. USIZE     SET    8
  192.     ENDC
  193.     IFC    '\2','END'
  194. SOFFSET     SET    SOFFSET+USIZE
  195. USIZE     SET    0
  196.     ENDC
  197.     ENDM
  198.  
  199. UNIEXTEND    MACRO    ;(Label/A, END/K/S)
  200. \1    =    SOFFSET
  201.     IFLT    USIZE-12
  202. USIZE     SET    12
  203.     ENDC
  204.     IFC    '\2','END'
  205. SOFFSET     SET    SOFFSET+USIZE
  206. USIZE     SET    0
  207.     ENDC
  208.     ENDM
  209.  
  210. UNIPACKED    MACRO    ;(Label/A, END/K/S)
  211. \1    =    SOFFSET
  212.     IFLT    USIZE-12
  213. USIZE     SET    12
  214.     ENDC
  215.     IFC    '\2','END'
  216. SOFFSET     SET    SOFFSET+USIZE
  217. USIZE     SET    0
  218.     ENDC
  219.     ENDM
  220.  
  221. UNIAPTR    MACRO    ;(Label/A, END/K/S)
  222. \1    =    SOFFSET
  223.     IFLT    USIZE-4
  224. USIZE     SET    4
  225.     ENDC
  226.     IFC    '\2','END'
  227. SOFFSET     SET    SOFFSET+USIZE
  228. USIZE     SET    0
  229.     ENDC
  230.     ENDM
  231.  
  232. UNICPTR    MACRO    ;(Label/A, END/K/S)
  233. \1    =    SOFFSET
  234.     IFLT    USIZE-4
  235. USIZE     SET    4
  236.     ENDC
  237.     IFC    '\2','END'
  238. SOFFSET     SET    SOFFSET+USIZE
  239. USIZE     SET    0
  240.     ENDC
  241.     ENDM
  242.  
  243. UNIFPTR    MACRO    ;(Label/A, END/K/S)
  244. \1    =    SOFFSET
  245.     IFLT    USIZE-4
  246. USIZE     SET    4
  247.     ENDC
  248.     IFC    '\2','END'
  249. SOFFSET     SET    SOFFSET+USIZE
  250. USIZE     SET    0
  251.     ENDC
  252.     ENDM
  253.  
  254. UNIRPTR    MACRO    ;(Label/A, END/K/S)
  255. \1    =    SOFFSET
  256.     IFLT    USIZE-2
  257. USIZE     SET    2
  258.     ENDC
  259.     IFC    '\2','END'
  260. SOFFSET     SET    SOFFSET+USIZE
  261. USIZE     SET    0
  262.     ENDC
  263.     ENDM
  264.  
  265. UNISTRUCT    MACRO    ;(Label/A, Length/A/N, END/K/S)
  266. \1    =    SOFFSET
  267.     IFLT    USIZE-\2
  268. USIZE     SET    \2
  269.     ENDC
  270.     IFC    '\3','END'
  271. SOFFSET     SET    SOFFSET+USIZE
  272. USIZE     SET    0
  273.     ENDC
  274.     ENDM
  275.  
  276. UNICHARS    MACRO    ;(Label/A, Length/A/N, END/K/S)
  277. \1    =    SOFFSET
  278.     IFLT    USIZE-\2
  279. USIZE     SET    \2
  280.     ENDC
  281.     IFC    '\3','END'
  282. SOFFSET     SET    SOFFSET+USIZE
  283. USIZE     SET    0
  284.     ENDC
  285.     ENDM
  286.  
  287.     ;** Offset-Ausrichtungen **
  288.  
  289. ALIGNFLOAT    MACRO    ;Offset für nächsten Fließkomma-Typen setzen
  290. SOFFSET    SET    (SOFFSET+1)&$fffffffe
  291.     ENDM
  292.  
  293. ALIGNQUADWORD    MACRO    ;Offset auf nächstes QuadWord setzen (8 Bytes)
  294. SOFFSET    SET    (SOFFSET+7)&$fffffff8
  295.     ENDM
  296.  
  297. ALIGNMEMBLOCK    MACRO    ;Offset auf nächstes vielfaches von MEM_BLOCKSIZE
  298. SOFFSET    SET    (SOFFSET+MEM_BLOCKMASK)&(~MEM_BLOCKMASK)
  299.     ENDM
  300.  
  301.     ;** intuition **
  302.  
  303. DATPOS_C    EQU    -1    ; Text zentrieren
  304. DATPOS_L    EQU    -2    ; Text linksbündig
  305. DATPOS_R    EQU    -3    ; Text rechtsbündig
  306.  
  307. ;*** rhosigma / DATEXT() ***
  308. ;============================================================================
  309. ; Dieses Macro erstellt einen Teilstring des Parameterstrings der Intuition-
  310. ; Funktion »DisplayAlert()«. Wahlweise kann der Text automatisch zentriert,
  311. ; oder links- bzw. rechsbündig ausgerichtet werden.
  312. ;----------------------------------------------------------------------------
  313. ; Definiert:    settings.i  (Copyright © 1998-2001 RhoSigma, Roland Heyder)
  314. ;
  315. ; Schablone:    xPos/A/N, yPos/A/N, Text/A, END/K/S
  316. ;
  317. ; Parameter:    xPos  --> x-Position des Textes,
  318. ;        oder einer der oben definierten DATPOS-Werte
  319. ;
  320. ;    yPos  --> y-Position des Textes,
  321. ;        Ausrichtung nach BaseLine des Fonts (topaz/8)
  322. ;
  323. ;    Text  --> der auszugebende Text selbst,
  324. ;        in <..>, wenn Leerzeichen enthalten sind
  325. ;
  326. ;    END   --> Wird dieses Schlüsselwort angegeben, dann endet der
  327. ;              Parameterstring an dieser Stelle, anderenfalls muß
  328. ;              ein weiterer Teilstring (Macro-Aufruf) folgen.
  329. ;
  330. ; Bemerkung:    Ein Beispiel für die Benutzung dieses Macros finden Sie in der
  331. ;    Datei »demo/AlertDemo.ASM«.
  332. ;============================================================================
  333.  
  334. DATEXT    MACRO    ;(xPos/A/N, yPos/A/N, Text/A, END/K/S)
  335.     ;----------------------------------------------------
  336.     IFEQ    \1+(-DATPOS_C)
  337.      dc.w    DAz\@    ; X-Pos berechnet (zentriert)
  338.     ELSEIF
  339.      IFEQ    \1+(-DATPOS_L)
  340.       dc.w    12    ; X-Pos (linksbündig)
  341.      ELSEIF
  342.       IFEQ    \1+(-DATPOS_R)
  343.        dc.w    DAr\@    ; X-Pos berechnet (rechtsbündig)
  344.       ELSEIF
  345.        dc.w    \1    ; angegebene absolute X-Pos
  346.       ENDC
  347.      ENDC
  348.     ENDC
  349.     ; Mit »dc.w« wird hier sichergestellt, daß der ParamString auf
  350.     ; einer geraden Adresse beginnt (wichtig für OS 1.3 und früher).
  351.     ; Eine ungerade Zeichenanzahl des Teilstrings sorgt außerdem da-
  352.     ; für, daß wir mit allen Koordinaten u. anderen Bytes zusammen
  353.     ; letztlich auch wieder auf einer geraden Adresse ankommen, für
  354.     ; die X-Pos des nächsten Teilstrings. Sollte der Text eine ge-
  355.     ; rade Anzahl Zeichen haben, wird einfach ein Leerz. angehängt.
  356.  
  357.     dc.b    \2        ; Y-Pos
  358. DAs\@    dc.b    "\3"        ; Text ohne 0-Byte
  359. DAe\@
  360. DAl\@    =    (DAe\@-DAs\@)        ; Länge der Zeichenkette
  361.  
  362. DAz\@    =    (640-(DAl\@*8))/2  ; X-Pos für Zentrierung
  363. DAr\@    =    (640-(DAl\@*8))-12 ; X-Pos für rechtsbündig
  364.  
  365.     IFEQ    (DAl\@&1)        ; wenn gerade Zeichenanzahl
  366.      dc.b    " "        ; dann ein Leerz. anhängen
  367.     ENDC            ; (wegen OS 1.3 u. früher)
  368.  
  369.     IFNC    '\4','END'
  370.      dc.b    0,1        ; Text-0-Byte u. Continue
  371.     ELSEIF
  372.      dc.b    0,0        ; Text-0-Byte u. ParamEnde
  373.     ENDC
  374.     ;----------------------------------------------------
  375.     ENDM    ;DATEXT
  376.  
  377.     ENDC    ;settings.i
  378.